Skip to main content

Safe

Use the potentiometer to select digits and enter the password to open the safe. If the safe is cracked open, the system will sound an alarm.

Building Instructions

Building Instructions

Sample Wiring Diagram

KittenBlock Sample Program

[Download Sample Program(Right Click->Save As)](https://github.com/kittenbothk/kittenbothk/raw/master/Kits/future_inventor/Programming Case/sb3/safe.sb3)

Python Sample Program

#/bin/python

from time import sleep
from future import *
from sugar import *
import robotbit

lock_password = 0
curr_password = 0
curr_digit = 0
x = 0
y = 0
authorize = 0
digit = 0


def activate():
global lock_password,curr_password,curr_digit,x,y,authorize,digit

if Button("P1").value() == 0:
sleep(0.2)
enterPW()



def break_in():
global lock_password,curr_password,curr_digit,x,y,authorize,digit

if not Hall("P2").value() == 0:
while not Hall("P2").value() == 0:
neopix.setColorAll((255, 0, 0))
buzzer.melody(NOTICE)
sleep(2)
neopix.setColorAll((0,0,0))



def enterPW():
global lock_password,curr_password,curr_digit,x,y,authorize,digit

while not (len(curr_password) == len(str(lock_password))):
screen.fill((0, 0, 0))
screen.text(str(str(curr_password)+str(curr_digit)),30,55,3,(0, 119, 255))
screen.refresh()
curr_digit = (round(valmap(Angle("P0").value(), 0, 4095, 0, 9)))
if Button("P1").value() == 0:
curr_password = (str(curr_password)+str(curr_digit))
digit += 1
sleep(0.2)
break_in()
test()



def init():
global lock_password,curr_password,curr_digit,x,y,authorize,digit

robot.geekServo2kg(1, 0)
neopix.setColorAll((0,0,0))
screen.clear()
lock_password = (str(2021))
curr_password = ""
authorize = 0
digit = 1
screen.textCh("請輸入密碼",20,56,2,(255, 255, 255))
screen.refresh()



def test():
global lock_password,curr_password,curr_digit,x,y,authorize,digit

if curr_password == lock_password:
screen.fill((0, 255, 0))
screen.textCh("密碼正確",35,50,2,(255, 255, 255))
screen.refresh()
authorize = 1
buzzer.melody(CORRECT)
robot.geekServo2kg(1, 90)
sleep(1)
while not Button("P1").value() == 0:
pass
sleep(1)
else:
screen.fill((255, 0, 0))
screen.textCh("密碼錯誤",35,50,2,(255, 255, 255))
screen.refresh()
buzzer.melody(ERROR)
init()



def valmap(x, in_min, in_max, out_min, out_max):
return int((x-in_min) * (out_max-out_min) / (in_max-in_min) + out_min)


robot = robotbit.RobotBit()

neopix=NeoPixel("P7",3)

screen.sync = 0

init()

while True:
activate()
if not authorize == 1:
break_in()

[Download Sample Program(Right Click->Save As)](https://github.com/kittenbothk/kittenbothk/raw/master/Kits/future_inventor/Programming Case/py/safe.py)

Program Instructions

Press the button to begin entering password, select a digit by turning the potentiometer, press the button to confirm. Once 4 digits have been entered, the safe door opens if the password is correct(default: 2021).